<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en"><head>
<title>Draft: OInvite Required Postage Discovery 1.0 -
			Draft 1</title>
<meta http-equiv="Expires" content="Tue, 02 Jun 2009 22:23:23 +0000">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="OInvite Required Postage Discovery 1.0 -
			Draft 1">
<meta name="generator" content="xml2rfc v1.33 (http://xml.resource.org/)">
<style type="text/css"><!--
        body {
                font-family: verdana, charcoal, helvetica, arial, sans-serif;
                font-size: small; color: #000; background-color: #FFF;
                margin: 2em;
        }
        h1, h2, h3, h4, h5, h6 {
                font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
                font-weight: bold; font-style: normal;
        }
        h1 { color: #900; background-color: transparent; text-align: right; }
        h3 { color: #333; background-color: transparent; }

        td.RFCbug {
                font-size: x-small; text-decoration: none;
                width: 30px; height: 30px; padding-top: 2px;
                text-align: justify; vertical-align: middle;
                background-color: #000;
        }
        td.RFCbug span.RFC {
                font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
                font-weight: bold; color: #666;
        }
        td.RFCbug span.hotText {
                font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
                font-weight: normal; text-align: center; color: #FFF;
        }

        table.TOCbug { width: 30px; height: 15px; }
        td.TOCbug {
                text-align: center; width: 30px; height: 15px;
                color: #FFF; background-color: #900;
        }
        td.TOCbug a {
                font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
                font-weight: bold; font-size: x-small; text-decoration: none;
                color: #FFF; background-color: transparent;
        }

        td.header {
                font-family: arial, helvetica, sans-serif; font-size: x-small;
                vertical-align: top; width: 33%;
                color: #FFF; background-color: #666;
        }
        td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
        td.author-text { font-size: x-small; }

        /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
        a.info {
                /* This is the key. */
                position: relative;
                z-index: 24;
                text-decoration: none;
        }
        a.info:hover {
                z-index: 25;
                color: #FFF; background-color: #900;
        }
        a.info span { display: none; }
        a.info:hover span.info {
                /* The span will display just on :hover state. */
                display: block;
                position: absolute;
                font-size: smaller;
                top: 2em; left: -5em; width: 15em;
                padding: 2px; border: 1px solid #333;
                color: #900; background-color: #EEE;
                text-align: left;
        }

        a { font-weight: bold; }
        a:link    { color: #900; background-color: transparent; }
        a:visited { color: #633; background-color: transparent; }
        a:active  { color: #633; background-color: transparent; }

        p { margin-left: 2em; margin-right: 2em; }
        p.copyright { font-size: x-small; }
        p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
        table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
        td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }

        ol.text { margin-left: 2em; margin-right: 2em; }
        ul.text { margin-left: 2em; margin-right: 2em; }
        li      { margin-left: 3em; }

        /* RFC-2629 <spanx>s and <artwork>s. */
        em     { font-style: italic; }
        strong { font-weight: bold; }
        dfn    { font-weight: bold; font-style: normal; }
        cite   { font-weight: normal; font-style: normal; }
        tt     { color: #036; }
        tt, pre, pre dfn, pre em, pre cite, pre span {
                font-family: "Courier New", Courier, monospace; font-size: small;
        }
        pre {
                text-align: left; padding: 4px;
                color: #000; background-color: #CCC;
        }
        pre dfn  { color: #900; }
        pre em   { color: #66F; background-color: #FFC; font-weight: normal; }
        pre .key { color: #33C; font-weight: bold; }
        pre .id  { color: #900; }
        pre .str { color: #000; background-color: #CFF; }
        pre .val { color: #066; }
        pre .rep { color: #909; }
        pre .oth { color: #000; background-color: #FCF; }
        pre .err { background-color: #FCC; }

        /* RFC-2629 <texttable>s. */
        table.all, table.full, table.headers, table.none {
                font-size: small; text-align: center; border-width: 2px;
                vertical-align: top; border-collapse: collapse;
        }
        table.all, table.full { border-style: solid; border-color: black; }
        table.headers, table.none { border-style: none; }
        th {
                font-weight: bold; border-color: black;
                border-width: 2px 2px 3px 2px;
        }
        table.all th, table.full th { border-style: solid; }
        table.headers th { border-style: none none solid none; }
        table.none th { border-style: none; }
        table.all td {
                border-style: solid; border-color: #333;
                border-width: 1px 2px;
        }
        table.full td, table.headers td, table.none td { border-style: none; }

        hr { height: 1px; }
        hr.insert {
                width: 80%; border-style: none; border-width: 0;
                color: #CCC; background-color: #CCC;
        }
--></style>
</head><body>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
<tbody><tr><td class="header">Draft</td><td class="header">D. Fuelling</td></tr>
<tr><td class="header">&nbsp;</td><td class="header">Sappenin Technologies</td></tr>
<tr><td class="header">&nbsp;</td><td class="header">May 2009</td></tr>
</tbody></table></td></tr></tbody></table>
<h1><br>OInvite Required Postage Discovery 1.0 -
			Draft 1</h1>

<h3>Abstract</h3>

<p> OInvite utilizes OInvite Identifiers to uniquely identify a
				particular Entity. In order to send an OInvite to a particular
				Invitee, it would be useful to know that Entity's minimum acceptable
				POW postage requirements, so as to avoid automatic rejection due to
				insufficient postage. 
</p>
<p> This document details a mechanism for entities to advertise their
				minimum POW postage for use in the OInvite protocol.
</p>
<p> This document builds off of OInvite-Core, and incorporates all
				definitions and requirements of that specification. 
</p><a name="toc"></a><br><hr>
<h3>Table of Contents</h3>
<p class="toc">
<a href="#anchor1">1.</a>&nbsp;
Definitions<br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor2">1.1.</a>&nbsp;
Requirements Notation<br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor3">1.2.</a>&nbsp;
Definitions<br>
<a href="#anchor4">2.</a>&nbsp;
Protocol Overview<br>
<a href="#oi-pow-xrd-format">3.</a>&nbsp;
OInvite Required Postage XRD Extension Format<br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor5">3.1.</a>&nbsp;
XRD Extension Elements<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#anchor6">3.1.1.</a>&nbsp;
requiredPostage<br>
<a href="#anchor7">Appendix&nbsp;A.</a>&nbsp;
Non-Normative Examples<br>
<a href="#anchor8">Appendix&nbsp;A.1.</a>&nbsp;
Example: OInvite Minimum Postage in XRD<br>
<a href="#anchor9">Appendix&nbsp;A.2.</a>&nbsp;
Example: OInvite Minimum Postage Link in XRD<br>
<a href="#oi-min-postage-message-schema">Appendix&nbsp;B.</a>&nbsp;
OInvite Minimum Postage Schema<br>
<a href="#rfc.references1">4.</a>&nbsp;
Normative References<br>
<a href="#rfc.authors">§</a>&nbsp;
Author's Address<br>
</p>
<br clear="all">

<a name="anchor1"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.1"></a><h3>1.&nbsp;
Definitions</h3>

<a name="anchor2"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.1.1"></a><h3>1.1.&nbsp;
Requirements Notation</h3>

<p>
					The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
					"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
					this document are to be interpreted as described in
					<a class="info" href="#RFC2119">[RFC2119]<span> (</span><span class="info">Bradner, B., “Key words for use in RFCs to Indicate Requirement Levels,” 1997.</span><span>)</span></a>
					.
				
</p>
<a name="anchor3"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.1.2"></a><h3>1.2.&nbsp;
Definitions</h3>

<p>
					</p>
<blockquote class="text"><dl>
<dt>OInvite Identifier</dt>
<dd> An collection of numbers and/or characters that,
							taken as a whole, is immutable and universally unique (For
							example, an RFC-2822 email address).
</dd>
<dt>Postage</dt>
<dd> The value (in bits) of an OInvite POW token.
							Postage reflects an amount of work that involves the expenditure
							of actual resources. 
</dd>
<dt>Minimum Postage</dt>
<dd> The value (in bits) of the minimum Postage required
							in an OInvite in order for a particular user to automatically
							review an OInviate request. 
</dd>
</dl></blockquote><p>
				
</p>
<a name="anchor4"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.2"></a><h3>2.&nbsp;
Protocol Overview</h3>

<p>
				</p>
<ol class="text">
<li> OInvite utilizes OInvite Identifiers that uniquely identify a
						particular Invitor and/or Invitee. In order to send an OInvite to
						a particular Invitee, it is useful to know that invitee's minimum
						acceptable POW postage requirements in a dynamic way.
</li>
<li> For example, an OInvite user who has set their Minimum Postage
						to 10 bits may find they are receiving invitation spam. That user
						might decide to increase his/her Minimum Postage to 20 bits,
						thereby automatically rejecting any OInvites with less than the
						required postage amount. It will be very useful to be able to
						advertise this change to any future OInvite invitors. 
</li>
<li> In order to determine a particular Invitee's Minimum Postage,
						XRD discovery can be performed on the Invitee's unique identifier
						(e.g., email address, JabberID, OpenID, etc). The process to
						discover an XRD document for a particular OInvite Identifier is
						left undefined by this specification, since each Identifier type
						will likely have it's own Discovery mechanism (e.g., the best way
						to find an XRD document for an email address is currently being
						debated and specified, and may change over time). 
</li>
<li> However, in all cases the result of XRD discovery will be an
						XRD document
						(http://www.hueniverse.com/hueniverse/2009/03/xrd-document-structure.html). 
					
</li>
<li>
						The XRD document for a particular InviteeId will contain either
						the actual minimum postage for the invitee, or it will contain an
						XRD
						<div style="display: table; width: 0pt; margin-left: 3em; margin-right: auto;"><pre>&lt;link&gt;</pre></div>
						element describing an endpoint that will return an XRD document
						with the invitee's minimum postage requirements.
					
</li>
<li>
						The XRD extension elements are defined in
						<a class="info" href="#oi-pow-xrd-format">Section&nbsp;3<span> (</span><span class="info">OInvite Required Postage XRD Extension Format</span><span>)</span></a>
						.
					
</li>
</ol><p>
			
</p>
<a name="oi-pow-xrd-format"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.3"></a><h3>3.&nbsp;
OInvite Required Postage XRD Extension Format</h3>

<p>
				This extension document defines several extensions to the typical
				XRD format. First, a new service 'type' is defined as:
				</p>
<div style="display: table; width: 0pt; margin-left: 3em; margin-right: auto;"><pre>http://oinvite.net/ns/pow/required-postage</pre></div><p>

				to indicate that data a particular resource supports the
				advertisement of a minimum postage amount.
			
</p>
<p> Additionally, this extension defines a single XRD extension
				element, called 'requiredPostage', which can be used to indicate an
				entity's advertised minimum postage. 
</p>
<a name="anchor5"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.3.1"></a><h3>3.1.&nbsp;
XRD Extension Elements</h3>

<a name="anchor6"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.3.1.1"></a><h3>3.1.1.&nbsp;
requiredPostage</h3>

<p> This is the minimum amount of required postage that an invitee
						requires in order to *not* automatically reject a new OInvite.
</p>
<a name="anchor7"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.A"></a><h3>Appendix A.&nbsp;
Non-Normative Examples</h3>

<a name="anchor8"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.A.1"></a><h3>Appendix A.1.&nbsp;
Example: OInvite Minimum Postage in XRD</h3>

<p>
					The following is an example of an XRD document that is advertising
					OInivte Minimum Required Postage:
					
</p><p>Example:
</p><div style="display: table; width: 0pt; margin-left: 3em; margin-right: auto;"><pre>&lt;XRD&gt;
    &lt;Subject&gt;beth@example.com&lt;/Subject&gt;
    &lt;Alias&gt;http://users.example.com/beth&lt;/Subject&gt;
    &lt;Expires&gt;2010-01-30T09:30:00Z&lt;/Expires&gt;

    &lt;type&gt;http://oinvite.net/ns/version/1.0&lt;/type&gt;
    &lt;type&gt;http://oinvite.net/ns/ext/1.0/pow-required-postage&lt;/type&gt;
    &lt;oinvite:requiredPostage&gt;25&lt;/oinvite:requiredPostage&gt;
&lt;/XRD&gt;
</pre></div>
				

<a name="anchor9"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.A.2"></a><h3>Appendix A.2.&nbsp;
Example: OInvite Minimum Postage Link in XRD</h3>

<p>
					The following is an example of an XRD document that is advertising
					a link to an XRD that contains the OInivte Minimum Required
					Postage:
					
</p><p>Example:
</p><div style="display: table; width: 0pt; margin-left: 3em; margin-right: auto;"><pre>&lt;XRD&gt;
    &lt;Subject&gt;beth@example.com&lt;/Subject&gt;
    &lt;Alias&gt;http://users.example.com/beth&lt;/Subject&gt;
    &lt;Expires&gt;2010-01-30T09:30:00Z&lt;/Expires&gt;

    &lt;type&gt;http://oinvite.net/ns/core/version/1.0&lt;/type&gt;
    &lt;type&gt;http://oinvite.net/ns/ext/1.0/pow-req-postage&lt;/type&gt;

    &lt;Link&gt;
        &lt;type&gt;http://oinvite.net/ns/ext/1.0/pow-required-postage&lt;/type&gt;
        &lt;URI&gt;http://users.example.com/beth/oinvite.xrd&lt;/URI&gt;
    &lt;/Link&gt;
&lt;/XRD&gt;
</pre></div>
				

<a name="oi-min-postage-message-schema"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<a name="rfc.section.B"></a><h3>Appendix B.&nbsp;
OInvite Minimum Postage Schema</h3>

<p>
				
</p><p>
</p><div style="display: table; width: 0pt; margin-left: 3em; margin-right: auto;"><pre>namespace oinvite = "http://www.oinvite.net/ns/core/1.0"

## Represents two possible OInvite document types
start = requiredPostage

## The only common element is the version.
element oinvite:requiredPostage{ text }
</pre></div>
			

<a name="rfc.references1"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<h3>4.&nbsp;Normative References</h3>
<table width="99%" border="0">
<tbody><tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
<td class="author-text">Bradner, B., “<a href="http://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate Requirement Levels</a>,” RFC&nbsp;2119, 1997.</td></tr>
<tr><td class="author-text" valign="top"><a name="XRD 1.0">[XRD 1.0]</a></td>
<td class="author-text">Hammer-Lahav, E. and W. Norris, “<a href="http://tools.oasis-open.org/version-control/browse/wsvn/xri/xrd/1.0/trunk/xrd-1.0.xml?sc=1">Extensible Resource Descriptor (XRD) Version 1.0</a>,” 2009.</td></tr>
</tbody></table>

<a name="rfc.authors"></a><br><hr>
<table summary="layout" class="TOCbug" align="right" cellpadding="0" cellspacing="2"><tbody><tr><td class="TOCbug"><a href="#toc">&nbsp;TOC&nbsp;</a></td></tr></tbody></table>
<h3>Author's Address</h3>
<table width="99%" border="0" cellpadding="0" cellspacing="0">
<tbody><tr><td class="author-text">&nbsp;</td>
<td class="author-text">David Fuelling</td></tr>
<tr><td class="author-text">&nbsp;</td>
<td class="author-text">Sappenin Technologies, LLC</td></tr>
<tr><td class="author-text">&nbsp;</td>
<td class="author-text">Salt Lake City, UT  84117</td></tr>
<tr><td class="author-text">&nbsp;</td>
<td class="author-text">USA</td></tr>
<tr><td class="author" align="right">Email:&nbsp;</td>
<td class="author-text"><a href="mailto:sappenin@gmail.com">sappenin@gmail.com</a></td></tr>
<tr><td class="author" align="right">URI:&nbsp;</td>
<td class="author-text"><a href="http://www.oinvite.net/">http://www.oinvite.net</a></td></tr>
</tbody></table>
</body></html>